using UnityEngine;
using UnityEngine.UI;

public class ChestUI : MonoBehaviour
{
    public GameObject chestUIPanel; // 引用 UI 面板
    public BackpackSystem backpackSystem;
    public Button[] itemButtons; // 引用道具按钮
    public Button confirmButton; // 引用确认按钮
    private Item selectedItem; // 玩家选择的道具
    private Item[] lootOptions; // 三个战利品选项
    public Sprite[] itemFrames; // 稀有度边框图片数组（顺序：Common, Rare, Epic, Legendary）

    
     [Header("按钮对应加载的组件")]
        [SerializeField] private Image[] itemIcons; // 图标
        [SerializeField] private Image[] itemFramesImages; // 稀有度边框
        [SerializeField] private Text[] itemNames; // 道具名称
        [SerializeField] private Text[] itemDescriptions; // 道具描述
        [SerializeField] private Text[] itemFunctionDescriptions; // 道具功能描述
        
    void Start()
    {
        // 开始时隐藏 UI 面板
        chestUIPanel.SetActive(false);

        // 为道具按钮添加监听器
        for (int i = 0; i < itemButtons.Length; i++)
        {
            int index = i; // 缓存索引以供闭包使用
            itemButtons[i].onClick.AddListener(() => SelectItem(index));
            
        }
        // 为确认按钮添加监听器
        confirmButton.onClick.AddListener(ConfirmSelection);
        Debug.Log("Confirm Button Listener Added");

    }

    // 显示 UI 面板并展示战利品选项
    public void ShowLootOptions(Item[] options)
    {
        lootOptions = options;
        chestUIPanel.SetActive(true);
        // 使用战利品选项更新 UI
        for (int i = 0; i < lootOptions.Length; i++)
        {
            UpdateButtonUI(itemButtons[i], lootOptions[i], i);
        }

    }

    void UpdateButtonUI(Button button, Item item, int index)
    {
        // 加载图标
        itemIcons[index].sprite = item.icon;

        // 加载稀有度边框
        itemFramesImages[index].sprite = itemFrames[(int)item.itemRarity];

        // 设置道具名称
        itemNames[index].text = item.itemName;

        // 设置道具描述
        itemDescriptions[index].text = item.description;

    }

    // 当点击道具按钮时调用
    void SelectItem(int index)
    {
        selectedItem = lootOptions[index];
        // 更新按钮的缩放状态
        for (int i = 0; i < itemButtons.Length; i++)
        {
            if (i == index)
            {
                itemButtons[i].transform.localScale = new Vector3(2.7f, 2.7f, 2.7f); // 放大选中按钮
            }
            else
            {
                itemButtons[i].transform.localScale =new Vector3(2.3f,2.3f,2.3f); // 重置未选中按钮大小
            }
        }
    }

    // 当点击确认按钮时调用
    void ConfirmSelection()
    {
        // 给玩家选择的道具
        if (selectedItem != null)
        {
            
            // 检查道具类型并执行相应操作
            if (selectedItem is ConsumableItem consumableItem)
            {
                
                Debug.Log("玩家选择的道具已被添加到背包：" + selectedItem.itemName);

                backpackSystem.PickUpConsumable(consumableItem);
            }
            // else if (selectedItem is PowerUpItem powerUpItem)
            // {
            //     Debug.Log("玩家选择的道具已被添加到背包：" + selectedItem.itemName);
            //
            //     backpackSystem.PickUpEquippableItem(powerUpItem);
            // }
            else
            {
                backpackSystem.PickUpEquippableItem(selectedItem);
                //Debug.LogError("道具存入失败");
            }
            

            // 隐藏 UI 面板
            chestUIPanel.SetActive(false);
            // 打印日志信息，确认道具已被添加
            //Debug.Log("玩家选择的道具已被添加到背包：" + selectedItem.itemName);
            
        }
    }
}